﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUProvincia : Form
    {
        List<CONEXION.PROVINCIA> provincias;
        CtrlProvincia controlador;
        
        public IUProvincia()
        {
            InitializeComponent();
            provincias = new List<CONEXION.PROVINCIA>();
            controlador = new CtrlProvincia();
        }

        private void IUProvincia_Load(object sender, EventArgs e)
        {
            provincias = controlador.getListProvincia();
            gridProvincia.DataSource = null;
            gridProvincia.DataSource = provincias;
            setRowsReadOnly();
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridProvincia.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtNombreProvincia.Text))
            {
                //procedemos a registrar
                CONEXION.PROVINCIA prov = new CONEXION.PROVINCIA()
                {
                    nombreProvincia = txtNombreProvincia.Text,
                    eliminado = 0
                };

                DialogResult dr = controlador.registrarProvincia(prov);
                if (dr == DialogResult.OK)
                {
                    //actualizamos la lista      
                    provincias = controlador.getListProvincia();
                    gridProvincia.DataSource = null;
                    gridProvincia.DataSource = provincias;

                    setRowsReadOnly();
                }

                txtNombreProvincia.ResetText();
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridProvincia.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                txtNombreProvincia.Enabled = false;
                btnEliminar.Enabled = false;

                switch (btnModificar.Text)
                {
                    case "Modificar":
                        int index = gridProvincia.SelectedRows[0].Index;

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Completar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        //mostramos el boton cancelar
                        btnCancelar.Visible = true;

                        //volvemos la celda editable
                        gridProvincia.SelectedRows[0].ReadOnly = false;
                        gridProvincia.SelectedRows[0].Cells[1].Selected = true;
                        gridProvincia.CurrentCell = gridProvincia.SelectedRows[0].Cells[1];
                        gridProvincia.BeginEdit(true);
                        break;
                    case "Completar":
                        int ind = gridProvincia.CurrentRow.Index;
                        if (gridProvincia.Rows[ind].Cells[1].Value != null)
                        {
                            if (MessageBox.Show("¿Confirma actualizar la operación?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                            {
                                CONEXION.PROVINCIA pro = new CONEXION.PROVINCIA()
                                {
                                    idProvincia = gridProvincia.Rows[ind].Cells[0].Value.ToString(),
                                    nombreProvincia = gridProvincia.Rows[ind].Cells[1].Value.ToString(),
                                    eliminado = 0
                                };

                                DialogResult dr = controlador.actualizarProvincia(pro);
                            }
                        }
                        else
                        {
                            MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }

                        //actualizamos la lista      
                        provincias = controlador.getListProvincia ();
                        gridProvincia.DataSource = null;
                        gridProvincia.DataSource = provincias;

                        setRowsReadOnly();

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Modificar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

                        //ocultamos  el boton cancelar
                        btnCancelar.Visible = false;

                        //habilitamos el panel superior
                        btnAgregar.Enabled = true;
                        txtNombreProvincia.Enabled = true;
                        btnEliminar.Enabled = true;

                        break;
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            //actualizamos la lista      
            provincias = controlador.getListProvincia();
            gridProvincia.DataSource = null;
            gridProvincia.DataSource = provincias;

            setRowsReadOnly();

            //cambiamos el boton de modificar
            btnModificar.Text = "Modificar";
            btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

            //ocultamos  el boton cancelar
            btnCancelar.Visible = false;

            //habilitamos el panel superior
            btnAgregar.Enabled = true;
            txtNombreProvincia.Enabled = true;
            btnEliminar.Enabled = true;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridProvincia.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar la provincia y todo su contenido?\n Al eliminar la provincia, se eliminan los distritos que pertenecen", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                {
                    int index = gridProvincia.SelectedRows[0].Index;
                    CONEXION.PROVINCIA pro = provincias.ElementAt(index);
                    pro.eliminado = 1;

                    controlador.eliminarProvincia(pro);
                }

                //actualizamos la lista      
                provincias = controlador.getListProvincia();
                gridProvincia.DataSource = null;
                gridProvincia.DataSource = provincias;

                setRowsReadOnly(); 
            }
        }

        private void gridProvincia_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridProvincia.DataSource != null)
            {
                gridProvincia.Columns["idProvincia"].Visible = false;
                gridProvincia.Columns["nombreProvincia"].HeaderText = "Provincia";
                gridProvincia.Columns["nombreProvincia"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridProvincia.Columns["eliminado"].Visible = false;
            }
        }
    }
}
